execute{
  result.resetArchivedFilesCounter();
  if (params == null || params.length == 0) {
  if (!source.exists()) {
  if (params.length > 1) {
    sleep=Long.valueOf(params[1]);
  File target=new File("." + File.separator + "target/"+ params[0]);
  executor=Executors.newFixedThreadPool(SIZE);
    copyDirectory(source,target,sleep);
    throw new IllegalArgumentException(e.getMessage());
  executor.shutdown();
  while (!executor.isTerminated()) {
  int archivedFilesCount=result.getArchivedFilesCounter();
}
copyDirectory{
  if (sourceLocation.isDirectory()) {
    if (!targetLocation.exists()) {
      targetLocation.mkdirs();
    String[] children=sourceLocation.list();
    for (int i=0; i < children.length; i++) {
      copyDirectory(new File(sourceLocation,children[i]),new File(targetLocation,children[i]),sleep);
 else {
    ArchivingTask archiverTask=archivingInstance.get();
    archiverTask.setSource(sourceLocation);
    archiverTask.setTarget(targetLocation);
    archiverTask.setSleep(sleep);
    archiverTask.execute();
}
